﻿using Management.Auxiliary;
using System.Linq;
using LinqKit;

namespace Management.Core.Team
{
    public class TeamManager:BaseManager<Team>
    {
        public Paging<Team> FindPageList(Paging<Team> pagingTeam, int? teamID, string name, int? order)
        {
            //查询表达式
            var _where = PredicateBuilder.New<Team>(true);
            if (teamID != null && teamID > 0) _where = _where.And(u => u.TeamID == teamID);
            if (!string.IsNullOrEmpty(name)) _where = _where.And(u => u.Name.Contains(name));
            //排序
            OrderParam _orderParam;
            switch (order)
            {
                case 0://ID升序
                    _orderParam = new OrderParam() { PropertyName = "TeamID", Method = OrderMethod.ASC };
                    break;
                case 1://ID降序
                    _orderParam = new OrderParam() { PropertyName = "TeamID", Method = OrderMethod.DESC };
                    break;
                case 2://创建时间降序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.ASC };
                    break;
                case 3://创建时间升序
                    _orderParam = new OrderParam() { PropertyName = "Created_at", Method = OrderMethod.DESC };
                    break;
                case 4://修改时间升序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.ASC };
                    break;
                case 5://修改时间降序
                    _orderParam = new OrderParam() { PropertyName = "Updated_at", Method = OrderMethod.DESC };
                    break;
                default://ID降序
                    _orderParam = new OrderParam() { PropertyName = "TeamID", Method = OrderMethod.DESC };
                    break;
            }

            pagingTeam.Items = Repository.FindPageList(pagingTeam.PageSize, pagingTeam.PageIndex, out pagingTeam.TotalNumber, _where, _orderParam).ToList();
            return pagingTeam;
        }
    }
}
